package ferrovia;

public interface DefsGlobais {
/**
 * Defini��es globais (enumera��es, constantes, etc.	
 * @author Fernando Vanini
 *
 */
	
	/**
	 *  Define os tipos de elementos da malha ferroviaria.
	 */
	public enum TipoElemento { COMPOSICAO, TRECHO, SENSOR, CHAVE }
	
	/**
	 *  Define os tipos poss�veis de falhas. 
	 */
	public enum TipoFalha { ELETRICA, MECANICA, FREIO, ACELERACAO, GERAL, INDEFINIDA }
	
	public enum TipoAtributo{
		ID,   // identifica��o de um elemento da malha ferroviaria              [ Valor: String  ]
		TIPO, // tipo do elemento                                               [ Valor: TipoElemento ]
		
		// atributos espec�ficos de uma composi��o
		// -- fixos --
		COMPRIMENTO,       // comprimento da composi��o.                        [ Valor: Float    ]
		VELOCIDADE_MAX,    // velocidade m�xima da composi��o                   [ Valor: Float    ]
		ACELERACAO_MAX,    // acelera��o m�xima.                                [ Valor: Float    ]
		FRENAGEM_MAX,      // frenagem m�xima.                                  [ Valor: Float    ]
		ITINERARIO,        // itiner�rio.                                       [ Valor: String[] ]
		// -- vari�veis ---
		ID_TR_CH_ATUAL,    // id. do trecho ou chave atual.                     [ Valor: String  ]
		POSICAO_ATUAL,     // posi��o atual (num trecho).                       [ Valor: Float   ]
		VEL_ATUAL,         // velocidade atual.                                 [ Valor: Float   ]
		SENTIDO_ATUAL,     // sentido (AB=>true, BA => false)                   [ Valor: Boolean ]
		ACEL_ATUAL,        // acelera��o atual.                                 [ Valor: Float   ]
		FREN_ATUAL,        // taxa de frenagem atual.                           [ Valor: Float   ]
		
		// atributos espec�ficos de um trecho
        // -- fixos --		
		DISTANCIA,         // Dist�ncia entre as extremidades                   [ Valor: Float   ]
		ID_CHAVE_A,        // identifica��o da chave conectada � extremidade A  [ Valor: String  ]
		ID_CHAVE_B,        // identifica��o da chave conectada � extremidade B  [ Valor: String  ]
		N_SENSORES,        // n�mero de sensores do trecho                      [ Valor: Integer ]
		// -- variaveis --
		N_COMPOSICOES,     // n�mero de composi��es trafegando pelo trecho      [ Valor: Integer ]
		
		// atributos espec�ficos de uma chave
		// -- fixos --
		TRECHOS_A,         // trechos conect�veis � extremidade A.              [ Valor: String[] ]
		TRECHOS_B,         // trechos conect�veis � extremidade B.              [ Valor: String[] ]
		TEMPO_MUDANCA,     // tempo de mudan�a de estado.                       [ Valor: Integer  ]
		VEL_TRAVESSIA,     // velocidade de travesia.                           [ Valor: Float    ]
		// -- variaveis --
		ESTADO_ATUAL,      // estado atual                                      [ Valor: Boolean  ]
		TR_ATUAL_A,        // trecho atual na extremidade A                     [ Valor: String   ]
		TR_ATUAL_B,        // trecho atual na extremidade B                     [ Valor: String   ]
		TEMPO_CONCLUSAO    // tempo p/ concluir a mudan�a em curso              [ Valor: Float    ] 
	}	
		

}